package com.gxa.service.impl;

import com.gxa.common.R;
import com.gxa.entity.Emp;
import com.gxa.mapper.EmpMapper;
import com.gxa.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * Spring中重点知识
 *     1. IOC DI
 *     2. AOP
 *     3. 事务管理
 *
 * @Service
 * @Autowired @Resource
 * @Component
 * @Transactional
 * 关于AOP相关注解使用
 *
 * 原理：
 *     1. 工厂设计模式
 *     2. 代理设计模式
 *     3. 模板模式
 *     4. 装饰模式
 */
@Service
public class EmpServiceImpl implements EmpService {

    @Resource
    private EmpMapper empMapper;

    @Override
    public R addEmp(Emp emp) {
        R r = new R();
        try{
            Integer result = empMapper.addEmp(emp);
            if(result > 0){
                r.setCode(200);
                r.setMsg("success");
            }else{
                r.setCode(500);
                r.setMsg("添加失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("系统开小差了，请联系管理员！");
        }
        return r;
    }

    @Override
    public R updateEmp(Emp emp) {
        R r = new R();
        try {
            Integer update = empMapper.update(emp);
            if (update!=0){
                r.setCode(200);
                r.setMsg("success");
            }
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("系统开小差了，请联系管理员！");
        }

        return r;
    }

    @Override
    public R deleteEmp(int id) {
        R r = new R();
        try {
            Integer update = empMapper.delete(id);
            if (update!=0){
                r.setCode(200);
                r.setMsg("success");
            }
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("系统开小差了，请联系管理员！");
        }

        return r;
    }

    @Override
    public R select(int id) {
        R r = new R();
        try {
            Emp select = empMapper.select(id);
            if (select!=null){
                r.setCode(200);
                r.setMsg("success");
                r.setData(select);
            }
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("系统开小差了，请联系管理员！");
        }

        return r;

    }
}
